package cn.iocoder.yudao.module.dating.service.smallNote;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.dating.controller.admin.smallNote.vo.SmallNotePageReqVO;
import cn.iocoder.yudao.module.dating.controller.admin.smallNote.vo.SmallNoteSaveReqVO;
import cn.iocoder.yudao.module.dating.controller.app.samllNote.vo.*;
import cn.iocoder.yudao.module.dating.dal.dataobject.smallNote.SmallNoteDO;

import javax.validation.Valid;

/**
 * 小纸条 Service 接口
 *
 * @author 芋道源码
 */
public interface SmallNoteService {

    /**
     * 创建小纸条
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createSmallNote(@Valid SmallNoteSaveReqVO createReqVO);

    /**
     * 更新小纸条
     *
     * @param updateReqVO 更新信息
     */
    void updateSmallNote(@Valid SmallNoteSaveReqVO updateReqVO);

    /**
     * 删除小纸条
     *
     * @param id 编号
     */
    void deleteSmallNote(Long id);

    /**
     * 获得小纸条
     *
     * @param id 编号
     * @return 小纸条
     */
    SmallNoteDO getSmallNote(Long id);

    /**
     * 获得小纸条分页
     *
     * @param pageReqVO 分页查询
     * @return 小纸条分页
     */
    PageResult<SmallNoteDO> getSmallNotePage(SmallNotePageReqVO pageReqVO);

    Long createAppSmallNote(AppSmallNoteReqVO createReqVO);

    AppSmallNoteTakeResVO takeSmallNote(AppSmallNoteTakeReqVO createReqVO);

    PageResult<AppSmallNoteTakeResVO> pushList(AppSmallNotePageReqVO pageReqVO);

    PageResult<AppSmallNoteTakeResVO> takeList(AppSmallNotePageReqVO pageReqVO);

    PageResult<AppSmallNoteCardResVO> topList(AppSmallNotePageReqVO pageReqVO);

    PageResult<AppSmallNoteCardResVO> squareList(AppSmallNotePageReqVO pageReqVO);

    AppSmallNoteTakeResVO takeSmallNoteById(Long id);

    AppSmallNoteTakeResVO infoSmallNoteById(Long id);
}